﻿using System;
using System.Windows.Forms;
using EntitiesAndMappings.Entities;
using ProyectoActivos.Const;
using ProyectoActivos.Daos;
using ProyectoActivos.Validate;

namespace ProyectoActivos.Forms.Mantenimiento
{
    public partial class FrmActualizarAlmacen : Form,IValidateForm
    {
        public Boolean CerroSinAccion { get; set; }

        private Almacen almacen;

        private Boolean _valido;

        public FrmActualizarAlmacen(Almacen almacen)
        {
            CerroSinAccion = false;
            InitializeComponent();
            _valido = true;
            this.almacen = almacen;
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            _valido = true;
            errorProvider.Clear();
            FormsAssert.AssertTextBoxNotEmptyAndSize(txtCodigo,2,errorProvider,this);
            FormsAssert.AssertTextBoxNotEmptyAndSize(txtNombre,100,errorProvider,this);
            FormsAssert.AssertTextBoxNotEmptyAndSize(txtDireccion, 100, errorProvider, this);
            ActionExecutor.Execute(this, delegate
            {
                almacen.Codigo = txtCodigo.Text;
                almacen.Nombre = txtNombre.Text;
                almacen.Direccion = txtDireccion.Text;
                almacen.Estado = Estado.Activo;
                var almacenDao = new AlmacenDAO();
                almacen = almacen.Id == 0 ? almacenDao.Insert(almacen) : almacenDao.Update(almacen);
                Close();
            });
        }
        
        private void FrmActualizarTrabajador_Load(object sender, EventArgs e)
        {
            _valido = true;
            txtDireccion.Text = almacen.Direccion;
            txtCodigo.Text = almacen.Codigo;
            txtNombre.Text = almacen.Nombre;
        }

        public void Invalid()
        {
            _valido = false;
        }

        public Boolean IsValid()
        {
            return _valido;
        }

        private void FrmActualizarTrabajador_FormClosing(object sender, FormClosingEventArgs e)
        {
            CerroSinAccion = (almacen.Id==0);
        }
    }
}
